home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1993…ch: Other People's Memory / ADC Developer CD (1993-03) (''Other People's Memory'')_iso / Dev.CD Mar 93.iso / Development Platforms / LISP Related / LISP Goodies / MCL 2.0 patch1 / MCL2.0p1-Notes < prev    next >
Encoding:
Text File  |  1992-10-30  |  13.1 KB  |  427 lines  |  [TEXT/CCL2]

  1. MCL 2.0p1 Release Notes
  2.  
  3.  
  4. This patch contains minor bug fixes we've accumulated over the
  5. several months since MCL 2.0 was frozen. Most of you can simply install
  6. the patch and ignore the extensive notes below; your experience of using
  7. MCL 2.0 should not change at all because of this patch.
  8.  
  9. If you have any problems installing or using this patch, please let us
  10. know at 
  11.  
  12.     bug-mcl@cambridge.apple.com
  13.  
  14. Thanks for using our Lisp!
  15.  
  16.  
  17. Installation
  18.  
  19. You probably received MCL 2.0p1.fasl in BinHex (.hqx) format. Before you
  20. can install the patch you will need to decode the BinHex, using an 
  21. application (like StuffIt or Compact Pro) that knows how to deal with
  22. BinHex. You can also use the "BinHex" application shipped with MCL 2.0,
  23. in the "Examples:" folder.
  24.  
  25. To install MCL 2.0p1, create a folder called "patches 2.0" in your 
  26. MCL folder, put the decoded patch file into it, start up MCL, 
  27. then type:
  28.  
  29.     (ccl::load-patches)
  30.     (save-application "MCL 2.0p1" :init-file "init")
  31.  
  32. When you start up the new MCL 2.0p1 application, it should know its 
  33. new patch level:
  34.  
  35.     Welcome to Macintosh Common Lisp Version 2.0p1!
  36.  
  37.  
  38.  
  39. Notes
  40.  
  41. The following describes some of the contents of this patch. The
  42. "individual patch file" names are for our own bookkeeping. Most 
  43. of this documentation is drawn from comments in the source code;
  44. much of it may seem cryptic, especially if you haven't encountered
  45. the bug yourself. Feel free to skim!
  46.  
  47.  
  48. Individual patch file: advise-patch.lisp
  49. Stop :after advice from consing the values list.
  50. Declare it to be dynamic-extent.
  51.  
  52.  
  53. Individual patch file: alias-patch.lisp
  54. Make probe-file work for both "foo:bar alias:" and "foo:bar alias".
  55. Make %path-getdirinfo look in desktop folder of all vols for aliases.
  56. Hack pb-resolve-alias to work for aliases on remote vols.
  57.  
  58.  
  59. Individual patch file: appleevents-patch.lisp
  60. Add 2 methods (open-application-document and print-application-document)
  61. which are called by open-documents-handler and print-documents-handler
  62. to actually do the open or print of a single file.
  63.  
  64. open-application-document                       [Generic function]
  65.           application path &optional startup
  66.  
  67. open-application-document                       [Primary method]
  68.           (application application) path &optional startup
  69.  
  70. Open-application-document is called by the default startup code (which
  71. you get if you do not specify the :TOPLEVEL-FUNCTION keyword to
  72. SAVE-APPLICATION and when MCL receives an Open Document AppleEvent. It
  73. is called with a first argument of *APPLICATION*, a pathname for the
  74. second argument and no third argument (this is a bug in the patch, it
  75. should be called with a third argument of T when called by the startup
  76. code, and no third argument when an Open Document AppleEvent is
  77. received later on).
  78.  
  79. The method specialized on APPLICATION will edit the file named by PATH
  80. in a Fred window if it is a text file or LOAD it if it is a fasl file.
  81. All other types of files are ignored.
  82.  
  83. print-application-document                      [Generic function]
  84.            application path &optional startup
  85.  
  86. print-application-document                      [Primary method]
  87.           (application application) path &optional startup
  88.  
  89. Same as open-application-document, but is called in response to
  90. a Print Document AppleEvent. The patch does not cause
  91. print-application-document to be called by startup code. Hopefully,
  92. this bug will be fixed by patch 2.
  93.  
  94. The method specialized on APPLICATION prints the file named by PATH
  95. by opening it in a Fred Window (with ED) and calling WINDOW-HARDCOPY.
  96.  
  97. Examples:
  98.  
  99. (defclass my-application (application) ())
  100.  
  101. (setq *application* (make-instance 'my-application))
  102.  
  103. (defmethod open-application-document ((app my-application) path &optional startup)
  104.   (declare (ignore startup))
  105.   (open-my-application-document path))
  106.  
  107. (defmethod print-application-document ((app my-application) path &optional startup)
  108.   (declare (ignore startup))
  109.   (print-my-application-document path))
  110.  
  111.  
  112. Individual patch file: ash-compiler-macro-patch.lisp
  113. Make ash compile in-line a little more often.
  114.  
  115.  
  116. Individual patch file: big-time-patch.lisp
  117. Make MCL's universal time stuff work for years up to 29936
  118. Also, call get-time-zone minimally. It takes 2.5 milliseconds
  119. to read the parameter RAM!
  120.  
  121.  
  122. Individual patch file: c-m-h-patch.lisp
  123. Fix ed-select-top-level-sexp (c-m-h) when at end by giving .
  124. ed-current/next... another arg
  125.  
  126.  
  127. Individual patch file: c-return-patch.lisp
  128. Make ed-newline-and-indent kill selection, then get position.
  129.  
  130.  
  131. Individual patch file: call-next-method-patch.lisp
  132. Since DEFMETHOD was updated to expand into an FLET of CALL-NEXT-METHOD,
  133. all methods which CALL-NEXT-METHOD have advertised that they give
  134. arguments to CALL-NEXT-METHOD. This causes the method combination code
  135. to generate slower and bigger code. This patch fixes the problem.
  136. Also make DYNAMIC-EXTENT declarations for #'CALL-NEXT-METHOD and
  137. #'NEXT-METHOD-P have an affect.
  138.  
  139.  
  140. Individual patch file: check-gf-args-patch.lisp
  141. Make arg checking of a call to a generic function work except for keys.
  142. Also, check for even length tail when calling a function that
  143. accepts keys, even if the exact keys are unknown or &allow-other-key.
  144.  
  145.  
  146. Individual patch file: close-step-window-patch.lisp
  147. Make window-close throw iff closing the current step window
  148.  
  149.  
  150. Individual patch file: debugger-paste-patch.lisp
  151. Changing the value of a closed over value cell in the debugger
  152. now works correctly.
  153.  
  154.  
  155. Individual patch file: declare-inline-patch.lisp
  156. The file compiler no longer forgets the source for
  157. functions that were declared to be inline.
  158.  
  159.  
  160. Individual patch file: defgeneric-cerror-patch.lisp
  161. Make defgeneric cerror on a change of lambda-list, just like
  162. defmethod does.
  163.  
  164.  
  165. Individual patch file: defmethod-traced-patch
  166. Fix call to find-method so encapsulations will be moved
  167. and (more important) so untracing won't put back the old definition!
  168.  
  169.  
  170. Individual patch file: defstruct-patch.lisp
  171. Patch makes the following work "as expected".
  172. #|
  173. (defstruct foo x)
  174.  
  175. You'll have to proceed through a cerror here.
  176. (defclass foo ()
  177.   ((x :accessor foo-x :initform 1)))
  178.  
  179. This function should not compile the foo-x in-line
  180. (that's the point of the patch).
  181. (defun bar (foo)
  182.   (foo-x foo))
  183. |#
  184.  
  185.  
  186. Individual patch file: directory patch
  187. %one-wild - don't resolve alias unless it matches
  188. directory, %directory, %all-directories avoid indirect circles 
  189. when resolving aliases.
  190. Fix (directory "*:abcd:" :directories t).
  191. Make %file*= - ALWAYS put the length back (fixes a crock in directory)
  192.  
  193.  
  194. Individual patch file: disable-selection-patch.lisp
  195. Disable the selection in the old key handler if a new one is
  196. selected by clicking on it with the mouse.
  197. Also, remove some of the blinking caused by set-selection-range.
  198.  
  199.  
  200. Individual patch file: dribble-fresh-line-patch.lisp
  201. Make stream-fresh-line work correctly on the DRIBBLE output
  202. and on output file streams.
  203.  
  204.  
  205. Individual patch file: earlier-fasl-type-patch.lisp
  206. Set the mac-file-type of a fasl file at creation time
  207. rather than after opening it.
  208. This prevents AUFS from doing character translation on it.
  209.  
  210.  
  211. Individual patch file: ensure-on-screen-patch.lisp
  212. Window-ensure-on-screen now calls view-default-position & view-default-size
  213. before using the wired in defaults.
  214.  
  215.  
  216. Individual patch file: equal-patch.lisp
  217. Make EQUAL work for non-simple strings and bit-vectors.
  218.  
  219.  
  220. Individual patch file: eval-debind-patch.lisp
  221. Fix to destructuring bind.
  222.  
  223.  
  224. Individual patch file: eventhook-patch.lisp
  225. Don't bind *EVENTHOOK* to NIL in break-loop.
  226. Instead, keep an *eventhooks-in-progress* list so
  227. that we don't reenter an erroring eventhook.
  228.  
  229.  
  230. Individual patch file: find-arg-mactype-patch.lisp
  231. Make DEFTRAP argument types work with or without a colon.
  232.  
  233.  
  234. Individual patch file: flush-output-patch.lisp
  235. Make FLUSH-OUTPUT on a file stream do #_FlushVol
  236.  
  237.  
  238. Individual patch file: focus-view-patch.lisp
  239. call-with-focused-view becomes a generic function at
  240. Mike Engber's suggestion.
  241.  
  242.  
  243. Individual patch file: fred-cursor-patch.lisp
  244. Clicking on a fred-mixin now changes the cursor with
  245. update-cursor, not set-cursor.
  246.  
  247.  
  248. Individual patch file: fred-package-patch.lisp
  249. Don't set-fred-package to NIL when initializing a fred window
  250. This prevents clone-window from changing the package.
  251.  
  252.  
  253. Individual patch file: get-time-zone-patch.lisp
  254. Return negative numbers for east of GMT (sheesh!)
  255.  
  256.  
  257. Individual patch file: hash-table-patch.lisp
  258. Fix infinite loop in do-rehash.
  259. The problem was when an EQUAL (or EQUALP) hash table contained
  260. both a key whose address was used to compute the hash code
  261. and a key the address of one of whose components was used to
  262. compute the hash code. If the EGC was enabled and the former key
  263. was ephemeral, the hash table could get in a state where it did
  264. not rehash after an EGC as it needed to. If a puthash was done
  265. on the former key, a duplicate value was entered in the hash table.
  266. ;
  267. clrhash now clears the bits that control rehashing.
  268. ;
  269. do-rehash cerror's on duplicate keys and will remove them if
  270. the user continues from the error.
  271. ;
  272. Also, puthash no longer makes nhash.vector.deleted-count become
  273. negative for weak hash tables.
  274. This could cause the table to become full and think it didn't
  275. need to grow: infinite loop time.
  276. ;
  277. clrhash calls $sp-eventch now and then so it won't be uninterruptable
  278. for long periods when clearing big hash tables under MacVM.
  279. ;
  280. grow-hash-table no longer throws away nhash.vector.weak-deletions-count.
  281. Decrementers of nhash.vector.deleted-count also update
  282. nhash.vector.weak-deletions-count, when appropriate.
  283. These two keep weak hash tables from thinking they have more
  284. entries than they really do.
  285.  
  286.  
  287. Individual patch file: indent-THE-patch.lisp
  288. (pushnew '(the . 1) *fred-special-indent-alist*
  289.          :key 'car)
  290.  
  291.  
  292. Individual patch file: index-stream-patch.lisp
  293. Fix resource contention problem for interface index streams.
  294. Works by saving the stream-position if event processing
  295. uses the *accessing-index-stream*.
  296.  
  297.  
  298. Individual patch file: inline-car-cdr-patch.lisp
  299. The following code no longer generates type-unsafe code
  300. #|
  301. (defun my-car (x)
  302.   (the list (car x)))
  303.  
  304. (defun my-cdr (x)
  305.   (the list (cdr x)))
  306. |#
  307.  
  308.  
  309. Individual patch file: set-file-position-patch.lisp
  310. (file-position stream new-position) used to sometimes forget
  311. characters written following the old end of file.
  312.  
  313.   
  314. Individual patch file: m-g-patch.lisp
  315. Ed-grab-last-input (m-g) now handles negative inputs.
  316.  
  317.  
  318. Individual patch file: make-load-form-patch.lisp
  319. Fix make-load-form-saving-slots bug:
  320. #|
  321. (defstruct a-struct slot-a slot-b)
  322.  
  323. This form no longer causes (%svref nil 4)
  324. (make-load-form-saving-slots (make-a-struct) '(slot-a))
  325.  
  326. This form now makes load form for no slots instead of all slots
  327. (make-load-form-saving-slots (make-a-struct) nil)
  328. |#
  329.  
  330.  
  331. Individual patch file: method-slot-name-patch.lisp
  332. Method-slot-name now looks inside of encapsulations.
  333. This makes tracing accessor methods work correctly.
  334.  
  335.  
  336. Individual patch file: open-coded-aref-patch.lisp
  337. Make nx2-vref put the result of the aref below in the right register.
  338. #|
  339. (defun test (data offset)
  340.   (declare (optimize (safety 0) (speed 3)))
  341.   (declare (type (simple-array (unsigned-byte 8) 1) data))
  342.   (ash (aref data offset) 24))
  343. |#
  344.  
  345.  
  346. Individual patch file: post-2.0-compiler-patch.lisp
  347. Fix typo in dotimes compiler-macro. 
  348.  
  349.  
  350. Individual patch file: pprint-dispatch.lisp
  351.  
  352.  
  353. Individual patch file: psetf-patch.lisp
  354. PSETF failed miserably if any of the value forms were not symbols
  355.  
  356.  
  357. Individual patch file: radio-button-patch.lisp
  358. It now works to add radion buttons to a view before
  359. adding the view to a window.
  360.  
  361.  
  362. Individual patch file: report-eval-abort-patch.lisp
  363. Report an abort of an evaluation from a fred buffer in its mini-buffer.
  364.  
  365.  
  366. Individual patch file: require-help-manager-patch.lisp
  367. Don't ignore-errors around auto-requiring the help-manager.
  368. Instead, don't try the require if the file doesn't exist
  369.  
  370.  
  371. Individual patch file: save-application-patch.lisp
  372. Close the output file if save-application errors
  373. before quitting.
  374.  
  375.  
  376. Individual patch file: set-control-text-patch.lisp
  377. The set-dialog-item-text method for control-dialog-item
  378. should be a primary method, not an after method, so that
  379. users can change the args.
  380.  
  381.  
  382. Individual patch file: set-part-color-patch.lisp
  383. (method set-part-color (control-dialog-item t t)) needs to focus
  384.  
  385.  
  386. Individual patch file: setf-apply-patch.lisp
  387. (setf (apply #'f ...) value) used to cons.
  388.  
  389.  
  390. Individual patch file: setf-GETF-and-THE-patch.lisp
  391. Make define-setf-method's for THE & GETF pass the environment to 
  392. get-setf-method
  393.  
  394.  
  395. Individual patch file: table-scrolling-patch.lisp
  396. Make the scroll bars operational on both tables if two table-dialog-item's
  397. are subviews of two different views contained in the same window.
  398. The problem was that #_LClick calls #_FindControl which assumes
  399. all the controls are in the same coordinate system.
  400. This code depends on #_FindControl returning the last control
  401. t finds.
  402.  
  403.  
  404. Individual patch file: trace-eql-patch.lisp
  405. Gake trace work for eql methods.
  406.  
  407.  
  408. Individual patch file: translate-pathname-patch.lisp
  409. Fixes translate-pathname when to is **.
  410.  
  411.  
  412. Individual patch file: trap-doc-patch.lisp
  413. Make documentation work correctly for traps.
  414.  
  415.  
  416. Individual patch file: untrace-patch.lisp
  417. Allow (untrace ((:method ..))) as well as (untrace (:method ..)).
  418.  
  419.  
  420. Individual patch file: windoid-type-patch.lisp
  421. Make the :window-type initarg do the obvious thing for windoids.
  422.  
  423.  
  424. Individual patch file: window-under-patch.lisp
  425. Invisible windows are no longer passed events from windoids.
  426.  
  427.